<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- designer-custom-widgets.qdoc -->
  <title>Creating and Using Components for Qt 设计师 | Qt设计师手册</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td ><a href="../qtdoc/index.html">Qt 5.12</a></td><td ><a href="qtdesigner-manual.html">Qt设计师手册</a></td><td >
			为 Qt 设计师 创建和使用组件</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right"><a href="qtdesigner-manual.html">Qt 5.12.3 参考指南</a></td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">目录</a></h3>
<ul>
<li class="level1"><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qtdesigner-components.html#creating-custom-widget-plugins"><font style="vertical-align: inherit;">创建自定义组件插件</font></a></li>
<li class="level1"><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qtdesigner-components.html#retrieving-access-to-qt-designer-components"><font style="vertical-align: inherit;">检索对</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">组件的访问</font></a></li>
<li class="level1"><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qtdesigner-components.html#creating-user-interfaces-at-run-time"><font style="vertical-align: inherit;">在运行时创建用户界面</font></a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">为 Qt 设计师 创建和使用组件</h1>
<span class="subtitle"></span>
<!-- $$$qtdesigner-components.html-description -->
<div class="descr"> <a name="details"></a>
<a name="creating-custom-widget-plugins"></a>
<h2 id="creating-custom-widget-plugins"><font style="vertical-align: inherit;">创建自定义组件插件</font></h2>
<p><font style="vertical-align: inherit;">在为</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">实现自定义组件插件时，您必须</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignercustomwidgetinterface.html"><font style="vertical-align: inherit;">继承 QDesignerCustomWidgetInterface</font></a><font style="vertical-align: inherit;">以将您的自定义组件公开给</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">。单个自定义组件插件构建为单独的库。如果要在同一个库中包含多个自定义组件插件，则必须另外子类</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignercustomwidgetcollectioninterface.html"><font style="vertical-align: inherit;">QDesignerCustomWidgetCollectionInterface</font></a><font style="vertical-align: inherit;">。</font></p>
<p><font style="vertical-align: inherit;">要在</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">的工作区中为您的自定义组件插件提供预期的行为和功能，您可以子类化相关的扩展类：</font></p>
<p><font style="vertical-align: inherit;">该</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignercontainerextension.html"><font style="vertical-align: inherit;">QDesignerContainerExtension</font></a><font style="vertical-align: inherit;">类可以让你的网页添加到自定义多页的容器。该</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignertaskmenuextension.html"><font style="vertical-align: inherit;">QDesignerTaskMenuExtension</font></a><font style="vertical-align: inherit;">类允许您自定义菜单项添加到</font><i><font style="vertical-align: inherit;">Qt设计师</font></i><font style="vertical-align: inherit;">的任务菜单。所述</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignermembersheetextension.html"><font style="vertical-align: inherit;">QDesignerMemberSheetExtension</font></a><font style="vertical-align: inherit;">类可以操纵配置使用连接时所显示的窗口组件的成员函数</font><i><font style="vertical-align: inherit;">Qt设计</font></i><font style="vertical-align: inherit;">的模式，用于编辑信号和槽。最后，</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignerpropertysheetextension.html"><font style="vertical-align: inherit;">QDesignerPropertySheetExtension</font></a><font style="vertical-align: inherit;">类允许您操作显示在</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">的属性编辑器中的组件的属性。</font></p>
<p class="centerAlign"><img src="images/qtdesignerextensions.png" alt="" /></p><p><font style="vertical-align: inherit;">在</font><i><font style="vertical-align: inherit;">Qt 设计师 中</font></i><font style="vertical-align: inherit;">，除非需要扩展，否则不会创建扩展。因此，在实现扩展时，您还必须</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qextensionfactory.html"><font style="vertical-align: inherit;">继承 QExtensionFactory</font></a><font style="vertical-align: inherit;">，即创建一个能够创建扩展实例的类。另外，你必须让</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">的扩展管理器注册你的工厂；扩展管理器根据需要控制扩展的构造，您可以通过</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignerformeditorinterface.html"><font style="vertical-align: inherit;">QDesignerFormEditorInterface</font></a><font style="vertical-align: inherit;">和</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qextensionmanager.html"><font style="vertical-align: inherit;">QExtensionManager</font></a><font style="vertical-align: inherit;">访问它。</font></p>
<p><font style="vertical-align: inherit;">有关创建带有扩展的自定义组件插件的完整示例，请参阅</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qtdesigner-taskmenuextension-example.html"><font style="vertical-align: inherit;">任务菜单扩展</font></a><font style="vertical-align: inherit;">或</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qtdesigner-containerextension-example.html"><font style="vertical-align: inherit;">容器扩展</font></a><font style="vertical-align: inherit;">示例。</font></p>
<a name="retrieving-access-to-qt-designer-components"></a>
<h2 id="retrieving-access-to-qt-designer-components"><font style="vertical-align: inherit;">检索对</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">组件的访问</font></h2>
<p><font style="vertical-align: inherit;">本节中提到的类的目的是提供对</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">的组件、管理器和工作区的访问，它们不打算直接实例化。</font></p>
<p><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">由几个组件组成。它有一个动作编辑器、一个属性编辑器、组件框和对象检查器，您可以在其工作区中查看。</font></p>
<p class="centerAlign"><img src="images/qtdesignerscreenshot.png" alt="" /></p><p><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">还有一个在幕后工作的对象；它包含将</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">的所有组件集成到一个连贯的应用程序中的逻辑。您可以使用</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignerformeditorinterface.html"><font style="vertical-align: inherit;">QDesignerFormEditorInterface</font></a><font style="vertical-align: inherit;">访问此对象，以检索</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">组件的接口：</font></p>
<ul>
<li><a href="qdesigneractioneditorinterface.html">QDesignerActionEditorInterface</a></li>
<li><a href="qdesignerobjectinspectorinterface.html">QDesignerObjectInspectorInterface</a></li>
<li><a href="qdesignerpropertyeditorinterface.html">QDesignerPropertyEditorInterface</a></li>
<li><a href="qdesignerwidgetboxinterface.html">QDesignerWidgetBoxInterface</a></li>
</ul>
<p><font style="vertical-align: inherit;">此外，您可以使用</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignerformeditorinterface.html"><font style="vertical-align: inherit;">QDesignerFormEditorInterface</font></a><font style="vertical-align: inherit;">来检索</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">的扩展管理器 ( </font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qextensionmanager.html"><font style="vertical-align: inherit;">QExtensionManager</font></a><font style="vertical-align: inherit;"> ) 和表单窗口管理器 ( </font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignerformwindowmanagerinterface.html"><font style="vertical-align: inherit;">QDesignerFormWindowManagerInterface</font></a><font style="vertical-align: inherit;"> ) 的接口。扩展管理器根据需要控制扩展的构建，而表单窗口管理器控制出现在</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">工作区中的表单窗口。</font></p>
<p><font style="vertical-align: inherit;">一旦您拥有</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">的窗体窗口管理器 ( </font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignerformwindowmanagerinterface.html"><font style="vertical-align: inherit;">QDesignerFormWindowManagerInterface</font></a><font style="vertical-align: inherit;"> ) 的接口，您还可以访问当前出现在</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">工作区中的所有窗体窗口：</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignerformwindowinterface.html"><font style="vertical-align: inherit;">QDesignerFormWindowInterface</font></a><font style="vertical-align: inherit;">类允许您查询和操作窗体窗口，并且它为窗体窗口的光标提供了一个接口。</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qdesignerformwindowcursorinterface.html"><font style="vertical-align: inherit;">QDesignerFormWindowCursorInterface</font></a><font style="vertical-align: inherit;">是一个方便的类，允许您查询和修改给定表单窗口的组件选择，此外还可以修改所有表单组件的属性。</font></p>
<a name="creating-user-interfaces-at-run-time"></a>
<h2 id="creating-user-interfaces-at-run-time"><font style="vertical-align: inherit;">在运行时创建用户界面</font></h2>
<p><font style="vertical-align: inherit;">该</font><code>QtDesigner</code><font style="vertical-align: inherit;">模块包含</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qformbuilder.html"><font style="vertical-align: inherit;">QFormBuilder</font></a><font style="vertical-align: inherit;">类，该类提供了一种在运行时根据使用</font><i><font style="vertical-align: inherit;">Qt 设计师</font></i><font style="vertical-align: inherit;">创建的 UI 文件动态创建用户界面的机制。此类通常由嵌入</font><i><font style="vertical-align: inherit;">Qt 设计师 的</font></i><font style="vertical-align: inherit;">自定义组件和应用程序使用。需要在运行时动态生成用户界面的独立应用程序使用<a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtuitools/qtuitools-module.html">QtUiTools</a>模块中的</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtuitools/quiloader.html"><font style="vertical-align: inherit;">QUiLoader</font></a><font style="vertical-align: inherit;">类。</font></p>
<p><font style="vertical-align: inherit;">有关使用</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtuitools/quiloader.html"><font style="vertical-align: inherit;">QUiLoader</font></a><font style="vertical-align: inherit;">的完整示例，请参阅</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qtdesigner-calculatorbuilder-example.html"><font style="vertical-align: inherit;">Calculator Builder 示例</font></a><font style="vertical-align: inherit;">。</font></p>
</div>
<p><b><font style="vertical-align: inherit;">请参考</font></b><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtdesigner/qtdesigner-manual.html"><font style="vertical-align: inherit;">Qt 设计师手册</font></a><font style="vertical-align: inherit;">和</font><a href="file:///E:/WLL/work/Qt5.12-Document-Trans-in-Chinese/qtuitools/qtuitools-index.html"><font style="vertical-align: inherit;">Qt UI 工具</font></a><font style="vertical-align: inherit;">。</font></p>
<!-- @@@qtdesigner-components.html -->
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2019 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br/>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br/>    Qt and respective logos are trademarks of The Qt Company Ltd.     in Finland and/or other countries worldwide. All other trademarks are property
   of their respective owners. </p>
</div>
</body>
</html>
